namespace JamesKovacs.Examples.ContractManager {
	/// <summary>
	/// Summary description for Product.
	/// </summary>
	public class Product {
		#region Constructors
		internal Product(string name, RecognitionStrategy strategy) {
			m_name = name;
			m_recognitionStrategy = strategy;
		}
		#endregion

		#region Public methods
        /// <summary>
        /// Calculates the revenue recognitions.
        /// </summary>
        /// <param name="contract">The contract.</param>
		public void CalculateRevenueRecognitions(Contract contract) {
			m_recognitionStrategy.CalculateRevenueRecognitions(contract);
		}
		#endregion

		#region Private fields
		private string m_name;
		private RecognitionStrategy m_recognitionStrategy;
		#endregion
	}
}
